import {ajaxGetDictItems, serviceAjaxGetDictItems} from '@/api/index.js'
import { imageUrl } from '@/utils/common.js'
// 获取数据字典

/**
 * 获取字典数组
 * @param dictCode 字典Code
 * @return List<Map>
 */
export async function initDictOptions(dictCode) {
	var getDictItemsCode = await uni.getStorageSync('getDictItemsCode')
	if (!dictCode) {
		return '字典Code不能为空!';
	}
	  //优先从缓存中读取字典配置
	  if (getDictItemsCode[dictCode]) {
	    let res = {}
	    res.result = getDictItemsCode[dictCode];
	    res.success = true;
	    return res;
	  }
  //获取字典数组
  //以，分割
  let dictCodeSplit = dictCode.split(',');
  let tableName = dictCodeSplit[0];
  let tableNameSplit = tableName.split('_');
  let res;
  /*  if ('hmhb' === tableNameSplit[0]) {
      res = await hmhbAjaxGetDictItems(dictCode);
    } else if ('erp' === tableNameSplit[0]) {
      res = await erpAjaxGetDictItems(dictCode);
    } else if ('imp' === tableNameSplit[0]) {
      res = await impAjaxGetDictItems(dictCode);
    } else {
      res = await sysAjaxGetDictItems(dictCode);
    }*/
  //以上注释代码做如下改动，是为了避免以后增加服务后，还要再修改这块的代码。开闭原则 modified by wuzx 20220601
  // debugger;
  if (tableNameSplit.length > 0 && tableNameSplit[0] && tableNameSplit[0] != 'sys' && dictCodeSplit.length > 1) {
    res = await serviceAjaxGetDictItems(tableNameSplit[0], dictCode);
  } else {
    res = await ajaxGetDictItems(dictCode);
  }
  return res;
}

/**
 * 字典值替换文本通用方法(多选)
 * @param dictOptions  字典数组
 * @param text  字典值
 * @return String
 */
export function filterMultiDictText(dictOptions, text) {
  //js “!text” 认为0为空，所以做提前处理
  if(text === 0 || text === '0'){
    if(dictOptions){
      for (let dictItem of dictOptions) {
        if (text == dictItem.value) {
          return dictItem.text
        }
      }
    }
  }

  if(!text || text=='null' || !dictOptions || dictOptions.length==0){
    return ""
  }
  let re = "";
  text = text.toString()
  let arr = text.split(",")
  dictOptions.forEach(function (option) {
    if(option){
      for(let i=0;i<arr.length;i++){
        if (arr[i] === option.value) {
          re += option.text+",";
          break;
        }
      }
    }
  });
  if(re==""){
    return text;
  }
  return re.substring(0,re.length-1);
}

/**
 * 分类文件类型并返回数组
 * @param file  文件类型
 * @return Array
 */
export function filterFileType(file){
	// 文件数据存在
	if(file){
		let fileList = file.split(',')
		let imageArray = [] // 储存图片类型
		let fileArray = [] // 储存文件类型
		const reg = /\.(gif|jpg|jpeg|png|svg|GIF|JPG|JPEG|PNG|SVG)$/
		return new Promise((resolve, reject) => {
			fileList.forEach(function(item) {
				uni.getFileInfo({
					filePath: imageUrl(item),
					success: function(data) {
						if(reg.test(item)){
							imageArray.push({
								type: item.substring(item.lastIndexOf('.')),
								size: bytesToSize(data.size),
								name: item.substring(item.indexOf('/')+1, item.lastIndexOf('.')),
								url: imageUrl(item),
								classify: 'image'
							})
						} else {
							fileArray.push({
								type: item.substring(item.lastIndexOf('.')),
								size: bytesToSize(data.size),
								name: item.substring(item.indexOf('/')+1, item.lastIndexOf('.')),
								url: imageUrl(item),
								classify: 'file'
							})
						}
						resolve({
							imageData: imageArray,
							fileData: fileArray
						})
					},
					fail: (err) => {
						reject(err)
					}
				})
			})
		})
	} else {
		return false
	}
}

function bytesToSize(size) {
    if (size < 1024) {
      //小于1KB，则转化成B
      size = size.toFixed(2) + "B";
    } else if (size < 1024 * 1024) {
      // 小于1MB，则转化成KB
      size = (size / 1024).toFixed(2) + "KB";
    } else if (size < 1024 * 1024 * 1024) {
      // 小于1GB，则转化成MB
      size = (size / (1024 * 1024)).toFixed(2) + "MB";
    } else {
			// 其他转化成GB
			size = (size / (1024 * 1024 * 1024)).toFixed(2) + "GB";
    }
    // 转成字符串
    let sizeStr = size + "",
		// 获取小数点处的索引
		index = sizeStr.indexOf("."),
		// 获取小数点后两位的值
		dou = sizeStr.substr(index + 1, 2);
    // 判断后两位是否为00，如果是则删除00
    if (dou == "00") return sizeStr.substring(0, index) + sizeStr.substr(index + 3, 2);
    return size;
}